ステート管理 : GameState.gd
ReactとかFlutterのように、ゲームアプリというのは
1種のGUIアプリケーションであるとみなせる。
それぞれのUIやSprite、物理オブジェクトはStateを持っていて、
それらを管理する必要がある。
Single Responsibility Principle
1つのクラスは、1つの事柄だけを操作する
Godotで言えば、1つのスクリプトは1つのNodeだけを操作する。
(もしくは、sceneを1つのNodeとみなす)
Script Map
https://gyazo.com/9e113846b332daaf62d2c8d46477187b
LevelシーンにGameState.gdをアタッチ
ステージシーンの最上位にセットするのが良さげ
Levelという名前のNode2D にスクリプトをアタッチする
Plyaer.lives と hurt()メソッドをGameState.gdに押し上げる
Playerからhurt()メソッドを取り除くと、on_entered_body(body)の
bodyから呼び出せない。
なので、グループ通信を使って GameState グループに属するオブジェクトに hurt 関数を
実行させる。
Group通信
まとめ
ゲームロジックは、LevelのトップにGameState.gdでまとめろ
SignalとGroupを使い分ける
Signal : 決まった相手とだけ
物理衝突など
Group : 不特定多数、または自分よりも上の階層にいる相手
今回は、GameStateグループのメソッドを遠隔呼び出し
end_game( ), hurt( )